<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="bLXQZ" id="bLXQZ"><span data-lake-id="uc6b4fc3e" id="uc6b4fc3e">典型回答</span></h1>
  <p data-lake-id="u5cd0ee72" id="u5cd0ee72"><br></p>
  <p data-lake-id="u55f5278a" id="u55f5278a"><span data-lake-id="u7369eec1" id="u7369eec1">这种问题，其实考察的就是你对Dubbo的理解程度了，一般可以从他的相关原理以及细节实现上面来回答，比如Dubbo作为一个RPC框架，需要考虑的问题有以下这几个：</span></p>
  <p data-lake-id="ub5495fe6" id="ub5495fe6"><span data-lake-id="ufa0e016e" id="ufa0e016e">​</span><br></p>
  <p data-lake-id="u87663d2b" id="u87663d2b"><span data-lake-id="u7e97ab43" id="u7e97ab43">1、RPC调用，需要通信吧，那就需要一个</span><strong><span data-lake-id="u4813874e" id="u4813874e">通信协议</span></strong><span data-lake-id="u36e7b6a2" id="u36e7b6a2">。</span></p>
  <p data-lake-id="u2d07da9d" id="u2d07da9d"><span data-lake-id="u2ad8e213" id="u2ad8e213">2、通信的过程中，需要做参数的序列化吧，那就需要一个</span><strong><span data-lake-id="uadbf6020" id="uadbf6020">序列化协议</span></strong><span data-lake-id="u03f4dee7" id="u03f4dee7">。</span></p>
  <p data-lake-id="u2d192a26" id="u2d192a26"><span data-lake-id="u45d3abaa" id="u45d3abaa">3、RPC框架中需要有注册中心吧，服务提供者和调用者需要和注册中心交互吧，这就需要解决</span><strong><span data-lake-id="u8034036f" id="u8034036f">服务的注册和发现</span></strong><span data-lake-id="u5059b289" id="u5059b289">的问题吧。</span></p>
  <p data-lake-id="ufcd9f957" id="ufcd9f957"><span data-lake-id="u1788f2c5" id="u1788f2c5">4、有了多个服务提供者之后，调用者在调用的时候，需要选择一个具体的服务调用吧，这时候是不是又需要</span><strong><span data-lake-id="u8ae68705" id="u8ae68705">负载均衡</span></strong><span data-lake-id="uaf665f71" id="uaf665f71">了。</span></p>
  <p data-lake-id="u26adad29" id="u26adad29"><span data-lake-id="u0a59657e" id="u0a59657e">5、RPC重要的是像调用本地服务一样调用远程服务，那么这就涉及到</span><strong><span data-lake-id="u38df0a75" id="u38df0a75">动态代理</span></strong><span data-lake-id="u42c0c9de" id="u42c0c9de">的技术实现了吧</span></p>
  <p data-lake-id="u234764de" id="u234764de"><span data-lake-id="u7c3d0c15" id="u7c3d0c15">6、除了以上这些重要的核心功能以外，还可以考虑，比如</span><strong><span data-lake-id="u46d899b5" id="u46d899b5">缓存</span></strong><span data-lake-id="u8a41a136" id="u8a41a136">、比如</span><strong><span data-lake-id="u46ccdf89" id="u46ccdf89">服务降级</span></strong><span data-lake-id="u2c1322be" id="u2c1322be">、比如</span><strong><span data-lake-id="u663a2f98" id="u663a2f98">泛化调用</span></strong><span data-lake-id="u95211896" id="u95211896">、比如</span><strong><span data-lake-id="ufc3f34b0" id="ufc3f34b0">优雅上下线</span></strong><span data-lake-id="uc84d179f" id="uc84d179f">、比如</span><strong><span data-lake-id="ue0bcbe2b" id="ue0bcbe2b">服务的高可用</span></strong><span data-lake-id="u9cadac61" id="u9cadac61">、比如</span><strong><span data-lake-id="u7052d449" id="u7052d449">异步回调</span></strong><span data-lake-id="uee4d1f4a" id="uee4d1f4a">、比如</span><strong><span data-lake-id="u12a5238e" id="u12a5238e">服务治理</span></strong><span data-lake-id="u101e531d" id="u101e531d">之类的了。</span></p>
  <p data-lake-id="ue47ac91d" id="ue47ac91d"><span data-lake-id="ub7db88ff" id="ub7db88ff">​</span><br></p>
  <p data-lake-id="u2ca43567" id="u2ca43567"><span data-lake-id="u52f3200f" id="u52f3200f">所以，把一个问题</span><strong><span data-lake-id="u4dd98c96" id="u4dd98c96">拆解</span></strong><span data-lake-id="ucb5b2842" id="ucb5b2842">出来之后，你会发现剩下这些问题可能都是你见过的——</span><strong><span data-lake-id="u01c4c9d2" id="u01c4c9d2" style="color: #DF2A3F">"八股文"！</span></strong></p>
  <p data-lake-id="u45980156" id="u45980156"><span data-lake-id="uce73d39e" id="uce73d39e">​</span><br></p>
  <p data-lake-id="u62b63edd" id="u62b63edd"><span data-lake-id="u9acac62f" id="u9acac62f">如通信协议：</span></p>
  <p data-lake-id="ue18f8cff" id="ue18f8cff"><span data-lake-id="u85d4bda8" id="u85d4bda8">​</span><br></p>
  <p data-lake-id="uceb0234d" id="uceb0234d"><br></p>
  <p data-lake-id="ubcf1da42" id="ubcf1da42"><span data-lake-id="u91e0f4f5" id="u91e0f4f5">如序列化协议的话，可以参考：</span></p>
  <p data-lake-id="ufcbb154b" id="ufcbb154b"><span data-lake-id="u9fa8c76f" id="u9fa8c76f">​</span><br></p>
  <p data-lake-id="u8b8b40b6" id="u8b8b40b6"><br></p>
  <p data-lake-id="u31591df5" id="u31591df5"><span data-lake-id="u2531ea97" id="u2531ea97">如服务的注册和发现：</span></p>
  <p data-lake-id="uf73fb50d" id="uf73fb50d"><span data-lake-id="u2385ccdc" id="u2385ccdc">​</span><br></p>
  <p data-lake-id="u1489bbdf" id="u1489bbdf"><br></p>
  <p data-lake-id="u98dd5df7" id="u98dd5df7"><span data-lake-id="uce69790a" id="uce69790a">如负载均衡：</span></p>
  <p data-lake-id="u1d87f2bf" id="u1d87f2bf"><span data-lake-id="u2e4ad545" id="u2e4ad545">​</span><br></p>
  <p data-lake-id="u3031989b" id="u3031989b"><br></p>
  <p data-lake-id="ua057b2d7" id="ua057b2d7"><span data-lake-id="u08c1dde3" id="u08c1dde3">如动态代理：</span></p>
  <p data-lake-id="u332fe0df" id="u332fe0df"><span data-lake-id="u7a4054d0" id="u7a4054d0">​</span><br></p>
  <p data-lake-id="u18d413eb" id="u18d413eb"><br></p>
  <p data-lake-id="uebd00bcf" id="uebd00bcf"><span data-lake-id="u61fff7d0" id="u61fff7d0">还有缓存、泛化调用、优雅上下线，在八股文中也都有，就不一一展示了，大家可以自行搜索一下。</span></p>
  <p data-lake-id="ued245220" id="ued245220"><span data-lake-id="u69ef4470" id="u69ef4470">​</span><br></p>
 </body>
</html>